

package com.ylbh.modules.sys.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ylbh.common.pojo.sys.dto.AddSupplierBillDTO;
import com.ylbh.common.pojo.sys.dto.SupplierBillDTO;
import com.ylbh.common.pojo.sys.dto.SysUserDTO;
import com.ylbh.common.pojo.sys.vo.SupplierBillVO;
import com.ylbh.common.pojo.sys.vo.SupplierListVO;
import com.ylbh.common.pojo.sys.vo.SysUserVO;
import com.ylbh.modules.sys.entity.SysUserEntity;
import com.ylbh.modules.sys.entity.SysUserEntity;
import oracle.jdbc.proxy.annotation.Post;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 系统用户
 *
 * @author Mark sunlightcs@gmail.renren
 */
@Mapper
@Repository
public interface SysUserDao extends BaseMapper<SysUserEntity> {

	/**
	 * 查询用户的所有权限
	 * @param userId  用户ID
	 */
	List<String> queryAllPerms(Long userId);

	/**
	 * 查询用户的所有菜单ID
	 */
	List<Long> queryAllMenuId(Long userId);

	/**
	 * 根据用户名，查询系统用户
	 */
	SysUserEntity queryByUserName(String username);

	/**
	 * 根据用户id修改最新的ip和时间
	 */
    void updateLastLoginInfoById(@Param("userId") Long userId,
								 @Param("ipAddr") String ipAddr);

	/**
	 * 修改供应商信息
	 * @param user
	 */
	void updateSupplierById(@Param(value = "user") SysUserDTO user);

	/**
	 * 添加供应商信息
	 * @param user
	 */
	void insertSupplierById(@Param(value = "user") SysUserVO user);

	/**
	 * 查询供应商信息
	 * @param userId
	 * @return
	 */
	SysUserVO selectUserDataById(@Param(value = "userId") Long userId);

	/**
	 * 查询现有供应商
	 * @return
	 */
    List<SupplierListVO> selectSupplierList();

	/**
	 * 供应商账单列表
	 * @param supplierBillDTO
	 * @param page
	 * @return
	 */
    List<SupplierBillVO> selectSupplierBillList(@Param(value = "supplierBillDTO") SupplierBillDTO supplierBillDTO,
												Page<Integer> page);

	/**
	 * 新增供应商账单
	 * @param addSupplierBillDTO
	 */
	void insertSupplierBill(@Param(value = "addSupplierBillDTO") AddSupplierBillDTO addSupplierBillDTO);

	/**
	 * 删除供应商账单
	 * @param ids
	 */
	void updateSupplierBillById(@Param(value = "ids") List<String> ids);

	/**
	 * 查询出所有非公司系统用户的信息
	 * @return
	 */
    List<Integer> selectAllUserId();

	/**
	 * 供应商用户列表
	 * @return
	 */
	List<SysUserEntity> selectAllRole();

	/**
	 * 供应商管理列表
	 * @param keywords
	 * @param page
	 * @return
	 */
    List<SysUserEntity> selectSupplierAdministrationList(String keywords, Page<Integer> page);
}
